package com.cd.university.service;

import com.cd.university.common.RestResult;
import org.springframework.web.multipart.MultipartFile;

/**
 * 定义了成果申请里面的统一规范
 * 结题申请：1：成果文件上传 2：成果基本数据上传
 * @author 陈栋
 * @create 2021/11/3 16:53
 */
public interface AchievementProcessor {

    /**
     * 上传结题文件
     * @param file 文件
     * @param primaryId 键id，当成是fileId
     * @param projectId 项目id
     * @param atId 结题形式id
     * @param categoryId 具体成果id
     * @return 统一响应格式
     */
    public RestResult applyFile(MultipartFile file,
                                String primaryId,
                                Integer projectId,
                                Integer atId,
                                Integer categoryId);

    /**
     * 上传基本的结题数据
     * @param data 基本数据
     * @return 统一响应格式
     */
    public RestResult applyData(Object data);

    /**
     * 返回所有待审核的成果形式的文件
     * @param pageNum 页数
     * @param pageSize 每页个数
     * @return 统一响应格式
     */
    public RestResult searchAllAchievement(Integer pageNum,Integer pageSize);

    /**
     * 获得所有的已经通过审核的成果
     * @param pageNum 页数
     * @param pageSize 每页个数
     * @return 统一响应格式
     */
    public RestResult searchAllPassAchievement(Integer pageNum, Integer pageSize);

    /**
     * 通过项目的项目的姓名搜索待审的成果形式
     * @param pageNum 页数
     * @param pageSize 每页个数
     * @param name 项目名称
     * @return 统一响应格式
     */
    public RestResult searchAchievementByName(Integer pageNum,Integer pageSize,String name);

    /**
     * 通过用户的姓名搜索待审的成果形式
     * @param pageNum 页数
     * @param pageSize 每页个数
     * @param name 用户的姓名
     * @return 统一响应格式
     */
    public RestResult searchAchievementByUserName(Integer pageNum,Integer pageSize,String name);

    /**
     * 确认审批通过
     * @param peId 审批号
     * @param reviewerId 审批人id
     * @return 统一响应格式
     */
    public RestResult approvedAchievement(Integer peId, Integer reviewerId);

}
